package com.ssy.lingxi.marketing.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.marketing.model.vo.common.request.CommonAgreeRequest;
import com.ssy.lingxi.marketing.model.vo.common.request.CommonIdReq;
import com.ssy.lingxi.marketing.model.vo.common.request.CommonIdsRequest;
import com.ssy.lingxi.marketing.model.vo.coupon.request.*;
import com.ssy.lingxi.marketing.model.vo.coupon.response.*;

/**
 * 平台优惠券服务类
 * @author yzc
 * @version 2.0.0
 * @date 2021/6/25
 */
public interface IPlatformCouponService {

    /**
     * 平台优惠券查询 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<PlatformCouponSummaryPageResponse>> pageSummaryPlatformCoupon(PlatformCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核平台优惠券 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<PlatformCouponSubmitAuditPageResponse>> pageSubmitAuditPlatformCoupon(PlatformCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核平台优惠券(一级) - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<PlatformCouponAuditPageResponse>> pageAuditOnePlatformCoupon(PlatformCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核平台优惠券(二级) - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<PlatformCouponAuditPageResponse>> pageAuditTwoPlatformCoupon(PlatformCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠券执行 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<PlatformCouponSubmitPageResponse>> pageSubmitPlatformCoupon(PlatformCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交平台优惠券 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<PlatformCouponExecutePageResponse>> pageExecutePlatformCoupon(PlatformCouponPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠券详情
     * @param request 接口参数
     * @param loginUser
     * @return 返回结果
     */
    Wrapper<PlatformCouponResponse> getPlatformCoupon(CommonIdReq request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠券发券详情
     * @param request 接口参数
     * @param loginUser
     * @return 返回结果
     */
    Wrapper<PlatformCouponGrantResponse> getGrantPlatformCoupon(CommonIdReq request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核平台优惠券 - 新增
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> addPlatformCoupon(PlatformCouponAddRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核平台优惠券 - 修改
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> updatePlatformCoupon(PlatformCouponUpdateRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核平台优惠券 - 删除
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> deletePlatformCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交审核平台优惠券 - 提交审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> submitAuditPlatformCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核平台优惠券(一级) - 提交审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> auditOnePlatformCoupon(CommonAgreeRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核平台优惠券(一级) - 批量提交审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> batchAuditOnePlatformCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核平台优惠券(二级) - 审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> auditTwoPlatformCoupon(CommonAgreeRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待审核平台优惠券(二级) - 批量审核
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> batchAuditTwoPlatformCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 待提交平台优惠券 - 批量提交
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> submitPlatformCoupon(CommonIdsRequest request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠券执行 - 发券
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> grantPlatformCoupon(PlatformCouponGrantRequest request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠券查询 - 修改
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> modificationPlatformCoupon(PlatformCouponModificationRequest request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠券查询 - 终止
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> stopPlatformCoupon(PlatformCouponOperationRequest request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠券查询 - 重启
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> restartPlatformCoupon(PlatformCouponOperationRequest request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠券查询 - 取消
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<Void> cancelPlatformCoupon(PlatformCouponOperationRequest request, UserLoginCacheDTO loginUser);

    /**
     * 平台优惠劵执行明细 - 查询条件
     * @param request 接口参数
     * @return 返回结果
     */
    Wrapper<PlatformCouponDetailConditionResponse> getExecutePlatformCouponDetailCondition(CommonIdReq request);

    /**
     * 平台优惠劵执行明细 - 分页列表
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<PlatformCouponDetailPageResponse>> pageExecutePlatformCouponDetail(PlatformCouponDetailPageRequest request, UserLoginCacheDTO loginUser);

    /**
     * 营销活动 - 附属商品 - 选择优惠券
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<ActivityGoodsCouponResponse>> selectSubsidiaryCouponList(ActivityPlatformCouponRequest request, UserLoginCacheDTO loginUser);

    /**
     * 营销活动 - 奖品 - 选择0元抵扣券
     * @param request 接口参数
     * @param loginUser 登录用户信息
     * @return 返回结果
     */
    Wrapper<PageData<ActivityPrizeCouponResponse>> selectPrizeCouponList(ActivityPlatformCouponRequest request, UserLoginCacheDTO loginUser);
}
